iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0
自我挑戰組

每日一杯 JavaScript 特調系列 第 4

undefined 、 undeclared 、 null 的區別

  • 分享至 

  • xImage
  •  

這幾天忙著北上,今天分享比較簡單的內容,關於「undefined 、 undeclared 、 null 三者的區別」

先比較 undefined 、 undeclared

undefined:宣告但尚未給予值
undeclared :根本沒宣告過

var x;  
console.log(x); // undefined
console.log(y); // y is not defined

undeclared 可以使用 typeof 的機制來避免報錯,對 typeof 來說,undeclared 或返回 undefined
https://ithelp.ithome.com.tw/upload/images/20210916/20141763DkbimJdMwg.png

接著來看 undefined 、 null

  • 兩者都是基本類型,都只有一個值,分別為undefined 、 null
  • undefined 表示未定義、而 null 是空值
  • 雖然 typeof null 為 object , 但這是老 bug 了
  • null 常用於一些可能之後會有值的變數,先作為初始化
  • 注意:請避免使用 undefined 作為變數值 , 因為 JS 引擎本來就會把未定義的變數 賦值為 undefined , 多此一舉沒有意義,而且會影響debug
undefined == null // true
undefined === null // false

由於 JS 並沒有把 undefined 列入保留字,要改undefined 的定義是可以的(當然自己實際打 code 不可以這麼做!

(function() {
    var undefined = 'not is undefined';
    console.log(undefined); //"not is undefined"
    console.log(typeof undefined) // "string"
})()

如果要確保拿到的 undefined 是原始的 undefined ,可以使用void 0,因為 void 所返回的一定是原始 undefined

var data;
console.log(data === void 0); //true

上一篇
同步、非同步事件控制
下一篇
JS 題:將變數宣告在全域環境是否為好習慣?
系列文
每日一杯 JavaScript 特調7
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言